﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using DAL;
using System.Xml.Linq;

public partial class admin_Users_Details : System.Web.UI.Page
{
  UserBLL userData = new UserBLL();
  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      LoadTitle();
      LoadRole();
      if (Request.QueryString["Id"] != null)
        Filldata();
    }
  }
  private void Filldata()
  {
    int id = Convert.ToInt32(Request.QueryString["Id"]);
    DAL.User user = userData.GetById(id);
    txtName.Text = user.Name;
    txtEmail.Text = user.Email;
    txtEmail.Enabled = false;
    trPass.Visible = false;
    txtPhone.Text = user.Phone;
    txtUserName.Text = user.UserName;
    if (radioRole.Items.Count > 0)
    {
      for (int i = 0; i < radioRole.Items.Count; i++)
      {
        if (radioRole.Items[i].Value == user.RoleId.ToString())
        {
          radioRole.Items[i].Selected = true;
          break;
        }
      }
    }
    trPass.Visible = false;
  }
  private void LoadRole()
  {
    radioRole.Items.Clear();
    string serverPath = Server.MapPath("~/");
    RoleBLL roleData = new RoleBLL(serverPath);
    List<RoleBLL.Role> list = roleData.GetAll();
    foreach (var item in list)
    {
      radioRole.Items.Add(new ListItem(item.Name, item.Id));
    }
    if (radioRole.Items.Count > 0) radioRole.Items[0].Selected = true;
  }
  private void LoadTitle()
  {
    if (Request.QueryString["Id"] != null)
    {
      h3Title.InnerText = "Chỉnh sửa thông tin tài khoản";
    }
  }
  private bool isValidate()
  {
    bool isUpdate = false;
    if (Request.QueryString["Id"] != null)
      isUpdate = true;

    if (txtName.Text == "")
    {
      lbThongBao.Text = "<Script>alert('Tên người dùng không được để trống !')</Script>";
      return false;
    }
    if (txtUserName.Text == "")
    {
      lbThongBao.Text = "<Script>alert('Tên tài khoản không được để trống !')</Script>";
      return false;
    }
    if (trPass.Visible == true && txtPass.Text == "")
    {
      lbThongBao.Text = "<Script>alert('Mật khẩu không được để trống !')</Script>";
      return false;
    }

    if (trPass.Visible == true && txtPass.Text.Length < 4)
    {
      lbThongBao.Text = "<Script>alert('Mật khẩu phải ít nhất 4 ký tự !')</Script>";
      return false;
    }
    if (!isUpdate && !Myfunction.isEmailValid(txtEmail.Text))
    {
      lbThongBao.Text = "<Script>alert('Địa chỉ Email không hợp lệ !')</Script>";
      return false;
    }
    if (!isUpdate && userData.isExitsEmail(txtEmail.Text))
    {
      lbThongBao.Text = "<Script>alert('Địa chỉ Email đã được sử dụng !')</Script>";
      return false;
    }
    if (!isUpdate && userData.isExitsUserName(txtUserName.Text))
    {
      lbThongBao.Text = "<Script>alert('Tên tài khoản đã được sử dụng !')</Script>";
      return false;
    }
    return true;
  }
  private void ResetForm()
  {
    txtName.Text = "";
    txtEmail.Text = "";
    txtPass.Text = "";
    txtPhone.Text = "";
    txtUserName.Text = "";
    if (radioRole.Items.Count > 0)
      radioRole.Items[0].Selected = true;
  }
  protected void btnOk_Click(object sender, EventArgs e)
  {
    if ((int)Session["Role"] != 1)
    {
      Myfunction.ThongBao(lbThongBao, "Bạn không có quyền thực hiện thao tác này ! ");
      return;
    }
    try
    {
      lbThongBao.Text = "";
      if (isValidate())
      {
        if (Request.QueryString["Id"] == null)
        {
          Add();
          ResetForm();
        }
        else
          Update();

       
      }
    }
    catch (Exception ex)
    {
      Myfunction.ThongBao(lbThongBao, ex.Message);
    }
  }
  private void Update()
  {
    int id = Convert.ToInt32(Request.QueryString["Id"]);
    DAL.User user = userData.GetById(id);

    user.Email = txtEmail.Text;
    user.Name = txtName.Text;
    user.Phone = txtPhone.Text;
    user.UserName = txtUserName.Text;
    user.Address = txtAddress.Text;
    if (radioRole.Items.Count > 0)
    {
      user.RoleId = Convert.ToInt32(radioRole.SelectedValue);
    }
    user.isEnable = (radioEnable.Checked ? true : false);
    if (fileAvatar.HasFile)
    {
      user.Avatar = Myfunction.UpdateFile(fileAvatar.PostedFile, "Images/Avatar", user.Name);
    }

    userData.Update(user);

    Myfunction.ThongBao(lbThongBao,"Thông tin tài khoản đã được cập nhật");
  }
  private void Add()
  {
    DAL.User user = new DAL.User();

    user.Id = userData.GetMaxId();
    user.Email = txtEmail.Text;
    user.Name = txtName.Text;
    user.PassWord = Myfunction.Encrypt(txtPass.Text);
    user.Phone = txtPhone.Text;
    user.UserName = txtUserName.Text;
    user.CreatedDate = DateTime.Now;
    user.Address = txtAddress.Text;

    if (fileAvatar.HasFile)
    {
      user.Avatar = Myfunction.CopyFile(fileAvatar.PostedFile, "Images/Avatar", user.Name);
    }
    if (radioRole.Items.Count > 0)
    {
      user.RoleId = Convert.ToInt32(radioRole.SelectedValue);
    }
    user.isEnable = (radioEnable.Checked ? true : false);

    userData.Add(user);
    Myfunction.ThongBao(lbThongBao,"Thông tin tài khoản đã được cập nhật");
  }
}